/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.invoice.model.dao;

import com.invoice.busines.dto.ContadorDTO;
import com.invoice.model.entities.Contadores;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.hibernate.Query;

/**
 *
 * @author Lenin
 */
public class ContadorDAOHibernate extends DAOGenerico implements ContadorDAO{
    Logger logger=Logger.getLogger(ContadorDAOHibernate.class.getName());
    @Override
    public Contadores convertDTOtoPojo(Object object) {
        if(object==null){
            return null;
        }
        ContadorDTO contadorDTO=(ContadorDTO)object;
        Contadores contadores=new Contadores();
        contadores.setDesCont(contadorDTO.getDescripcion());
        contadores.setIdCont(contadorDTO.getIdContador());
        contadores.setNumCont(contadorDTO.getNumeracion());
        contadores.setOficina(contadorDTO.getOficina());
        contadores.setTabla(contadorDTO.getTabla());
        
        return contadores;
        
}

    @Override
    public ContadorDTO convertPojotoDTO(Object object) {
        if(object==null){
            return null;
        }
        Contadores contadores=(Contadores)object;
        ContadorDTO contadorDTO=new ContadorDTO();
        contadorDTO.setDescripcion(contadores.getDesCont());
        contadorDTO.setIdContador(contadores.getIdCont());
        return contadorDTO;
    }

    @Override
    public ContadorDTO findById(int id) {
        try {
            startSession();
            Query query=session.createQuery("from Contadores where id_cont=:id").setParameter("id", id);
            Contadores contadores=(Contadores)query.uniqueResult();
            return convertPojotoDTO(contadores);
        } catch (Exception e) {
            logger.log(Level.SEVERE, null, e);
            return null;
        }finally{
            closeSession();
        }
    }

    @Override
    public int getNextContador(int id) {
        try {
            startSession();
            Query query=session.createSQLQuery("select NUM_CONT from contadores where ID_CONT=:id").setParameter("id", id);
            Integer contador=(Integer)query.uniqueResult();
            return contador;
        } catch (Exception e) {
            logger.log(Level.SEVERE, null, e);
            return 0;
        }finally{
            closeSession();
        }
    }
    
}
